#if !defined(__APP_POOL)

#define __APP_POOL

#define THREAD_NUM 5
#define MQ_MAXSIZE 10
#define MQ_NAME "/pool_task_queue"

// 任务结构体
typedef struct{
    // 任务函数
    void *(*task_func)(void *arg);
    // 任务参数
    void *arg;
} Task;

/**
 *  初始化线程池
 *  1.创建队列
 *  2.创建n线程数组
 */
int app_pool_init();

/**
 * 向线程池添加任务
 * 1. 把函数和参数封装为task结构体
 * 2. 把task结构体放入队列中
 */
int app_pool_add_task(void *(*task_func)(void *arg), void *arg);

/**
 * 销毁线程池
 * 1. 结束所有的线程
 * 2. 销毁队列 删除队列文件
 */
int app_pool_destroy();

#endif // __APP_POOL
